Amazon CloudWatch Application Insightsを自動セットアップ出来るようになりました
いわさです。
CloudWatch には Application Insights という機能があります。
本日、こちらを簡単にセットアップ出来る機能が追加されましたので試してみました。
Amazon CloudWatch Application Insightsとは
その前に、Amazon CloudWatch Application Insightsについて少しおさらいしておきたいと思います。
特定リソースのメトリクスだけでなく、リソースグループという概念でワークロード一式をまとめて、インフラストラクチャー・アプリケーションメトリクス・ログなどワークロードに関連する様々な情報を統合的に監視・通知・分析を行うことが出来るCloudWatchの機能のひとつです。
サポートされているテクノロジースタックであれば、アプリケーションリソースをスキャンして、推奨されるメトリクスとログのリストを提供しCloudWatchアラームとともに設定してくれる機能も備わっています。
IISや.NET、各種データベースがサポートされていますが、カスタマイズも可能です。
詳細は以下をご確認ください。
やってみる
早速、オンボーディング機能試してみたいと思います。
まずは、チュートリアルに沿って監視対象のワークロード一式を作成して、有効化だけは今回アップデートで追加された自動機能を使ってみたいと思います。
テストターゲットワークロードのデプロイ
チュートリアルでは、サンプルの.NET + SQL Serverワークロードを構築するためのCloudFormationテンプレートが提供されています。
SQL ServerがセットアップされているEC2が1台と、.NETアプリケーションがセットアップ済みのAMIを使ってALB + AutoScalingGroupが構成されています。
サンプルAMIの関係でus-east-1
でのみデプロイが可能です。
テンプレートは以下で公開されています。
ユーザーデータで、web.configを編集してデータベースの接続情報は動的に設定してくれているみたいです。良いですね。
アプリケーションやデータベースはサンプルAMIに既に含まれているようです。
X-RayデーモンだけCloudFormationで追加でインストールしていますね。
Application Insights のオンボーディング
ここからは新機能です。
CloudWatchダッシュボードにアクセスすると、「Application Insightsの使用を開始する」というパネルが表示されています。
これはApplication Insightsがまだ未構成の場合に表示されます。
「Application Insightsを設定」ボタンからアプリケーション名を入力して作成しましょう。
リソースは自動で検出されます。
アプリケーションに含めたくない不要なリソースが検出されますが、のちほどアプリケーション設定からリソースの削除や除外ができます。
ここでは、既に作成済みだったLambda関数やS3バケットなど、モニタリングから削除しました。
設定としてはこれだけで監視を開始することができます。
このタイミングで、ミドルウェアレイヤーに対しては、SSMドキュメントのAWSEC2-ApplicationInsightsCloudwatchAgentInstallAndConfigure
を使って設定が自動で行われているのが確認できました。
設定確認
Application Insights有効化直後の各種状態を確認してみると、自動検出されたワークロードが認識されています。
また、IISやアプリケーションのログ設定や各種アラームとメトリクスの監視が自動でデフォルト設定されていますね。
有効化プロセスで私は設定しなかったのですが、通知先の設定(SNS)もしていれば通知もオンボーディング時に構成が可能です。
SQL Serverは単独のEC2として管理されていて、WebサーバーはALB+ASGに紐づく形でWindows+IISとして管理されていました。
自動で認識してここまでログ設定など含めてやってくれるの、スゴイな。
問題を起こす
何か問題シナリオのシミュレートをしてみたいと思います。
Application Insightsチュートリアルでは、誤った認証情報でSSMSでのアクセスを繰り返すシナリオがあったのでそれを試してみます。
少し待つと、ダッシュボードに問題として検出がされました。
また、Application Insightsで自動設定されたアラームについても確認することができました。
さいごに
本日はCloudWatch Applicaiton Insightsに自動有効化機能を試してみました。
従来はリソースグループを作って、モニタリング設定や有効化をして、などもう少し手順があったのですが大幅に簡略化されましたね。
また、今回気づいたのですが、Application Insights自体はRDSやAuroraをターゲットにした場合のワークロードにも利用でき、.NET以外のテクノロジでもカスタムして適用することが出来るみたいです。
まだDevelopersIOに記事が少ないのですが、CloudWatch Application Insight思ったより汎用的に使えそうなので今後掘り下げていきたいと思います。